/**
 * 重载签名和实现签名
 * 解决两个问题：1、参数不正确；2、参数类型不正确；3、返回类型不正确。
 * */

// function fn(x: string): void
// function fn() {

// }

// fn('hello')

// 调用函数的时候看不到实现函数的参数，只能看到重载函数中的参数约束

// function fn(x: string): void
// function fn(x: boolean): void
// function fn(x: boolean | string) {

// }

function fn_overload(x: string): string
function fn_overload(x: boolean): boolean
function fn_overload(x: string | boolean): string | boolean {
  return true
}

fn_overload(true)